how to replace runtime polymorphism